package org.scboy.rbac.service;

import java.util.List;

import org.scboy.rbac.entity.AuthorizeForm;
import org.scboy.utils.entitys.coobi.Model;
import org.scboy.utils.entitys.coobi.Page;
/**
 * 
 *  资源业务相关功能。
 * @author yanghao
 *
 */
public interface ResourceService {
	/**
	 * 分页查询资源
	 * @param model
	 * @return
	 */
   Page page(Model model);
   /**
	 * 根据资源ID获取资源（资源ID）。
	 * @param id
	 * @return
	 */
   Model get(String id);
   /**
 	 * 新增资源（资源Model）。加入事务注解@Transactional。
 	 * @param model
 	 * @return
 	 */
   boolean add(Model model);
   /**
	 * 更新资源（资源Model）。加入事务注解@Transactional。
	 * @param model
	 * @return
	 */
   boolean update(Model model);
   /**
    * 删除资源
    * @param id
    * @return
    */
   boolean delete(String id);
   /**
  	 * 启用禁用（资源ID）
  	 * @param id
  	 * @return
  	 */
   boolean checkState(String id);
   /**
 	 * 设置取消默认（资源ID）。
 	 * @param id
 	 * @return
 	 */
   boolean isDefault(String id);

   
   /**
    * 查询资源集合
    * @param model
    * @return
    */
   List<Model> getList();

   
   /**
    * 获取资源的权限树
    * @param resId
    * @return
    */
   List<Model> getAuthorizeTree(String resId);
   

   /**
    * 加载权限数据
    * @param resId
    * @return
    */
   Model loadAuthorize(String resId);
   
   /**
    * 给资源授权系统，菜单和权限
    * @param params
    * @return
    */
   boolean authorize(AuthorizeForm params);

   /**
    * 获取组织关联的资源
    * @param orgId
    * @return
    */
   Model getResourceOrg(String orgId);
   
   /**
    * 获取用户关联的资源
    * @param userId
    * @return
    */
   Model getResourceUser(String userId);

   /**
    * 获取组织类型关联的资源
    * @param orgTypeId
    * @return
    */
   Model getResourceOrgType(String orgTypeId);

   /**
    * 获取用户类型关联的资源
    * @param userTypeId
    * @return
    */
   Model getResourceUserType(String userTypeId);
   
   /**
    * 获取角色类型关联的资源
    * @param code
    * @return
    */
   Model getResourceRoleType(String code);
   
   /**
    * 修改组织关联的资源
    * @param orgId
    * @param resId
    * @return
    */
   boolean updateResourceOrg(String orgId,String [] resId);
   
   /**
    * 修改用户关联的资源
    * @param userId
    * @param resId
    * @return
    */
   boolean updateResourceUser(String userId,String [] resId);
   
   /**
    * 修改组织类型关联的资源
    * @param orgTypeId
    * @param resId
    * @return
    */
   boolean updateResourceOrgType(String orgTypeId,String [] resId);
   
   /**
    * 修改用户类型关联的资源
    * @param userTypeId
    * @param resId
    * @return
    */
   boolean updateResourceUserType(String userTypeId,String [] resId);
   
   /**
    * 修改角色类型关联的资源
    * @param code
    * @param resId
    * @return
    */
   boolean updateResourceRoleType(String code,String [] resId);
   

   /**
    * 分页获取组织关联的资源
    * @param params
    * @return
    */
   Page resourceOrgPage(Model params);
   
   /**
    * 分页获取用户关联的资源
    * @param params
    * @return
    */
   Page resourceUserPage(Model params);

   /**
    * 分页获取组织类型关联的资源
    * @param params
    * @return
    */
   Page resourceOrgTypePage(Model params);

   /**
    * 分页获取用户类型关联的资源
    * @param params
    * @return
    */
   Page resourceUserTypePage(Model params);
   
   /**
    * 分页获取角色类型关联的资源
    * @param params
    * @return
    */
   Page resourceRoleTypePage(Model params);
   
   /**
    * 移除组织关联的资源
    * @param orgId
    * @return
    */
   boolean removeResourceOrg(String id);
   
   /**
    * 移除用户关联的资源
    * @param userId
    * @return
    */
   boolean removeResourceUser(String id);
   
   /**
    * 移除组织类型关联的资源
    * @param orgTypeId
    * @return
    */
   boolean removeResourceOrgType(String id);
   
   /**
    * 移除用户类型关联的资源
    * @param userTypeId
    * @return
    */
   boolean removeResourceUserType(String id);
   
   /**
    * 移除角色类型关联的资源
    * @param code
    * @return
    */
   boolean removeResourceRoleType(String id);
}
